#aggiungere una colonna con nome univoco per benchmark
#trasformarla in factor
#estrarre lista dei fattori
#creare per ogni fattore una colonna in un data.frame avente il nome del fattore
#copiare i dati relativi a quel fattore nella coonna opportuna (ma prima ordinare le righe a seconda del valore della piataforma
#fare grafico

risultatiBenchmark <-read.csv("risultatiBenchmark.csv",header=TRUE,sep=",")
#si crea nome univoco per benchamrk sperando di non creare collisioni
risultatiBenchmark$fullBenchmarkName <- paste(risultatiBenchmark$benchmarkName,trunc(log10(risultatiBenchmark$workDonePerIteration)),sep="") 

listaVmFull = as.factor(risultatiBenchmark$targetVM)
listaVm = levels(listaVmFull)
numeroVm = length(listaVm);
columnNameBenchmarkValue="executionTime";
benchmarkHistogramData = data.frame();
for(vmName in listaVm){
  insertVect <- risultatiBenchmark[risultatiBenchmark$targetVM==vmName,columnNameBenchmarkValue]
  #cat(insertVect)
  if(nrow(benchmarkHistogramData)!=length(insertVect)){
    #cat("lunghezza",length(insertVect));
    benchmarkHistogramData = as.data.frame(matrix(nrow=length(insertVect), ncol=0))
  }
  benchmarkHistogramData[,vmName] <- insertVect;
}
#Nomi righe, prendo i primi n nomi di esperimento, l'ordine è lo stesso per tutti.. speriamo anche nella estrazione
row.names(benchmarkHistogramData) <- risultatiBenchmark[1:nrow(benchmarkHistogramData),"fullBenchmarkName"] 

#ordino per nome esperimento
benchmarkHistogramData <- benchmarkHistogramData[order(rownames(benchmarkHistogramData)),]


#normalizzare righe rispetto la prima colonna
for(y in 1:nrow(benchmarkHistogramData)){
  normBaseValue = benchmarkHistogramData[y,1];
  #cat(normBaseValue,"\n")
  for(x in 1:ncol(benchmarkHistogramData)){
    benchmarkHistogramData[y,x]=benchmarkHistogramData[y,x]/normBaseValue;
  }
}
#dovrei usare questo:
#Now let's graph the total number of autos per day using some color and show a legend:

# Read values from tab-delimited autos.dat 
#autos_data <- read.table("C:/R/autos.dat", header=T, sep="\t")
   
# Graph autos with adjacent bars using rainbow colors
benchmarkTable=t(as.matrix(benchmarkHistogramData));
par(mar=c(10,4,4,4))
barplot(benchmarkTable, main="GWT vs Java Benchmark", ylab= paste("relative",columnNameBenchmarkValue), log="y",
   beside=TRUE, col=rainbow(numeroVm), las=2,cex.names=0.7)
legend("topleft",listaVm,cex=0.9,bty="n",fill=rainbow(numeroVm))
#aggiungere numero giusto di colori!!

# Place the legend at the top-left corner with no frame  
# using rainbow colors
#legend("topleft", c("Mon","Tue","Wed","Thu","Fri"), cex=0.6, 
#   bty="n", fill=rainbow(5));

  